package entity

import (
	"group-card/common/request"
	"time"
)

//region TODO:卡片溯源  Author:LiuYanLin Date:2023/03/30 周四 16:34

type CardTraceability struct {
	Id             int64     `xorm:"not null pk autoincr comment('主键ID') BIGINT(20)" json:"id"`                                          // id
	CardNumber     int64     `xorm:"not null default 0 BIGINT(20) comment('卡片序列号')"      json:"card_number"`                             // 卡片序列号
	StorageAdminId int64     `xorm:"not null default 0 BIGINT(20) comment('入库操作人id')" json:"storage_admin_id"`                           // 入库操作人id
	StorageTime    time.Time `xorm:"default null timestamp comment('入库时间')"     json:"storage_time"`                                     // 入库时间
	PublishAdminId int64     `xorm:"not null default 0 BIGINT(20) comment('发行操作人id')" json:"publish_admin_id"`                           // 发行操作人id
	PublishTime    time.Time `xorm:"default null timestamp comment('发行时间')"     json:"publish_time"`                                     // 发行时间
	ReceiveAdminId int64     `xorm:"not null default 0 BIGINT(20) comment('领用销售员id')" json:"receive_admin_id"`                           // 领用销售员id
	ReceiveTime    time.Time `xorm:"default null timestamp comment('领用时间')"     json:"receive_time"`                                     // 领用时间
	BindingUserId  int64     `xorm:"not null default 0 BIGINT(20) comment('绑定会员id')"  json:"binding_user_id"`                            // 绑定会员id
	BindingTime    time.Time `xorm:"default null timestamp comment('绑定时间')"     json:"binding_time"`                                     // 绑定时间
	WriteOffTime   time.Time `xorm:"default null timestamp comment('核销结束时间')"   json:"write_off_time"`                                   // 核销结束时间
	Status         int64     `xorm:"not null default 10 BIGINT(20) comment('状态 10入库 20发行 30领用 40绑定 50使用 60销毁')"           json:"status"` // 状态 10入库 20发行 30领用 40绑定 50使用 60销毁
	CreateAt       time.Time `xorm:"not null created comment('创建时间')"   json:"create_at"`                                                // 创建时间
	UpdateAt       time.Time `xorm:"not null updated comment('更新时间')"   json:"update_at"`                                                // 更新时间
	DeleteAt       time.Time `xorm:"not null deleted comment('删除时间')"   json:"delete_at"`                                                // 删除时间
	OrgId          int64     `xorm:"not null default 0 BIGINT(20) comment('组织ID')"          json:"org_id"`
	Org1           int64     `xorm:"not null default 0 BIGINT(20) comment('一级组织ID')"          json:"org1"`
	Org2           int64     `xorm:"not null default 0 BIGINT(20) comment('二级组织ID')"          json:"org2"`
	Org3           int64     `xorm:"not null default 0 BIGINT(20) comment('三级组织ID')"          json:"org3"`
	Org4           int64     `xorm:"not null default 0 BIGINT(20) comment('四级组织ID')"          json:"org4"`
	Org5           int64     `xorm:"not null default 0 BIGINT(20) comment('五级组织ID')"          json:"org5"`
}

func (*CardTraceability) TableName() string {
	return "card_traceability"
}

//endregion

type CardTraceabilityReq struct {
	Id              int64     `json:"id"`                                  // id
	CardNumber      int64     `json:"card_number"`                         // 卡片序列号
	StorageAdminId  int64     `json:"storage_admin_id"`                    // 入库操作人id
	StorageTime     time.Time `json:"storage_time"`                        // 入库时间
	PublishAdminId  int64     `json:"publish_admin_id"`                    // 发行操作人id
	PublishTime     time.Time `json:"publish_time"`                        // 发行时间
	ReceiveAdminId  int64     `json:"receive_admin_id"`                    // 领用销售员id
	ReceiveTime     time.Time `json:"receive_time"`                        // 领用时间
	BindingUserId   int64     `json:"binding_user_id"`                     // 绑定会员id
	BindingTime     time.Time `json:"binding_time"`                        // 绑定时间
	WriteOffTime    time.Time `json:"write_off_time"`                      // 核销结束时间
	Status          int64     `json:"status"`                              // 状态 10入库 20发行 30领用 40绑定 50使用 60销毁
	CreateAt        time.Time `xorm:"not null created"   json:"create_at"` // 创建时间
	UpdateAt        time.Time `xorm:"not null updated"   json:"update_at"` // 更新时间
	DeleteAt        time.Time `xorm:"not null deleted"   json:"delete_at"` // 删除时间
	request.BaseReq `xorm:"-" json:"-"`
}

type CardTraceabilityResp struct {
	Id             int64     `json:"id"`                                  // id
	CardNumber     int64     `json:"card_number"`                         // 卡片序列号
	StorageAdminId int64     `json:"storage_admin_id"`                    // 入库操作人id
	StorageTime    time.Time `json:"storage_time"`                        // 入库时间
	PublishAdminId int64     `json:"publish_admin_id"`                    // 发行操作人id
	PublishTime    time.Time `json:"publish_time"`                        // 发行时间
	ReceiveAdminId int64     `json:"receive_admin_id"`                    // 领用销售员id
	ReceiveTime    time.Time `json:"receive_time"`                        // 领用时间
	BindingUserId  int64     `json:"binding_user_id"`                     // 绑定会员id
	BindingTime    time.Time `json:"binding_time"`                        // 绑定时间
	WriteOffTime   time.Time `json:"write_off_time"`                      // 核销结束时间
	Status         int64     `json:"status"`                              // 状态 10入库 20发行 30领用 40绑定 50使用 60销毁
	CreateAt       time.Time `xorm:"not null created"   json:"create_at"` // 创建时间
	UpdateAt       time.Time `xorm:"not null updated"   json:"update_at"` // 更新时间
	DeleteAt       time.Time `xorm:"not null deleted"   json:"delete_at"` // 删除时间
}
